GIFFTRIPPAUDIO CHANNEL ANNOUNCER V3

Each enabled output repeatedly speaks its own number: output 1 says “one”, output 2 says “two”, and so on. Supports channels 1–128, limited to the channels exposed by the selected Core Audio device. Spoken numbers are bundled; no internet or speech service is needed at runtime.

QUICK START
1. Start Dante Virtual Soundcard with the desired channel count and network interface. It must be ready to pass audio, with the network clock established.
2. Open Channel Announcer.app. Choose Dante Virtual Soundcard under Output device. Refresh if it was started after this app.
3. Choose the first and last output channels. The default peak level is -24 dBFS.
4. In Dante Controller, patch the Mac/DVS TRANSMIT channels to the receiver inputs you want to identify. App channel 1 feeds DVS output/transmit channel 1, etc.
5. Press Start announcing. Tick Announce Numerically to cycle through the selected range in ascending order, then repeat. Only the channel being announced plays; all others stay silent. Untick it to repeat every number on its own channel simultaneously.
6. Press Stop (or Escape) before changing settings. With Announce Numerically unticked, click a numbered tile while stopped to solo that channel; click it again to restore the selected range. Numerical mode clears solo and cycles the entire selected range.

Repeat gap is the silence added after the longest announcement. Simultaneous mode uses a shared repeat cycle so the outputs remain synchronized. Shorter numbers have a little more silence. Numerical mode advances after each shared cycle.

The app selects its output directly; it does not change the Mac's default sound output, DVS configuration, or Dante subscriptions. There is no automatic switch to another output during playback. Device removal, channel-count changes, or sample-rate changes stop playback when detected (checked once per second).

LOCAL VALIDATION
The actual output renderer passed checks for 8/64/128-channel separation, interleaved and split audio buffers, silent disabled channels, sequential playback, gain, repeat gaps, and callback boundaries. All 128 bundled voice files loaded and normalized at 44.1/48/96 kHz. Live Dante transport and physical receiver assignment still require a network listening test.

REQUIREMENTS
Apple Silicon Mac, macOS 14 or later. A compatible Core Audio output exposing native 32-bit float audio. Dante Virtual Soundcard provides the Dante network interface; this app itself is not a Dante endpoint. The app is Developer ID signed, Apple-notarized, and has its notarization ticket attached.

SOURCE
ChannelAnnouncer.swift is included. Rebuild on this Mac with:
swiftc -parse-as-library -O ChannelAnnouncer.swift -o 'Channel Announcer.app/Contents/MacOS/ChannelAnnouncer' -framework Cocoa -framework SwiftUI -framework CoreAudio -framework AVFoundation
After rebuilding, sign the app with codesign --force --deep --sign - 'Channel Announcer.app'.
Run the executable with --self-test for local rendering checks, or --devices for output enumeration.

V3 adds the Bumblebee palette, yellow megaphone icon, footer branding, and All Channels checkbox. All Channels selects the full available device range (up to 128); unticking restores your previous range.
